﻿using System.IO.Ports;

namespace Vtron.ATSP.Infrastructure
{
    /// <summary>
    /// 串口通信接口
    /// </summary>
    /// <remarks>
    ///     <创建人>邓穗捷</创建人>
    ///     <创建时间>2014-08-22</创建时间>
    ///     <修订人></修订人>
    ///     <修订时间></修订时间>
    ///     <修订说明></修订说明>
    /// </remarks>
    public interface ISerialHandler
    {
        /// <summary>
        /// 检查端口连接
        /// </summary>
        /// <param name="portName">要使用的端口（例如 COM1）</param>
        /// <param name="baudRate">波特率</param>
        /// <returns>
        /// 是否连接成功 
        ///     true:成功
        ///     false:失败
        /// </returns>
        /// <remarks>
        ///     <创建人>邓穗捷</创建人>
        ///     <创建时间>2014-08-22</创建时间>
        ///     <修订人></修订人>
        ///     <修订时间></修订时间>
        ///     <修订说明></修订说明>
        /// </remarks>
        bool CheckCOM(string portName, int baudRate);

        /// <summary>
        /// 发送数据
        /// </summary>
        /// <param name="portName">要使用的端口（例如 COM1）</param>
        /// <param name="baudRate">波特率</param>
        /// <param name="parity">奇偶校验值</param>
        /// <param name="dataBits">标准数据位长度</param>
        /// <param name="stopBits">停止位数</param>
        /// <param name="readTimeout">超时时间（毫秒）</param>
        /// <param name="sendData">需要发送的数据</param>
        /// <returns>命令返回的数据</returns>
        /// <remarks>
        ///     <创建人>邓穗捷</创建人>
        ///     <创建时间>2014-08-22</创建时间>
        ///     <修订人></修订人>
        ///     <修订时间></修订时间>
        ///     <修订说明></修订说明>
        /// </remarks>
        byte[] Send(string portName, int baudRate, Parity parity, int dataBits, StopBits stopBits, int readTimeout, byte[] sendData);
    }
}
